package com.laomuji.android.mvvm.utils

import java.lang.reflect.ParameterizedType

/**
 * 提供反射相关操作
 * @author laomuji666
 * @since 2024/2/20
 */
object ReflectionUtil {
    /**
     * 获取泛型的第i个参数的JavaClass
     * @param cls JavaClass
     * @param i 第i个泛型参数
     */
    @Suppress("UNCHECKED_CAST")
    fun <T> getGenericsClass(cls: Class<out Any>, i: Int): Class<T>? {
        try {
            val genericSuperclass = cls.genericSuperclass as ParameterizedType
            return genericSuperclass.actualTypeArguments[i] as Class<T>
        } catch (e: Exception) {
            e.printStackTrace()
        }
        return null
    }
}